package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.util.Scanner;

/**
 * 案例：做一个记事本程序
 * 需求：程序开始之后，要求用户【从控制台】输入文件名--->假设： a.txt
 *      然后，针对文件进行读写操作
 *      用户可以在【控制台】输入一行行的文本内容，要求：写入 a.txt文件中
 *      判断，如果用户输入“退出/exit",程序结束
 *      a.txt直接出现 API 项目下 保存对应文本的内容
 *      要求：1.标准流--结合异常处理
 *           2.输出流--->输入流【读】 单元测试 testNote()
 */
public class Note {
    //单元测试：相对路径  ./a.txt 当前父级文件夹路径 API下
    //主方法：相对路径  ./a.txt 当前根级文件夹路径 javaAPI下
    public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException {

            FileOutputStream fos=null;
            OutputStreamWriter osw=null;
            BufferedWriter bw=null;
            PrintWriter pw=null;

                try {
                    //1.从控制台输入： a.txt 文本
                    Scanner input = new Scanner(System.in);
                    System.out.println("请输入文件名:");
                    String text = input.nextLine();//获取一行文本
                    //System.out.println(text);//打桩
                    //2.流--写
                    fos = new FileOutputStream(text);

                    osw = new OutputStreamWriter(fos, "UTF8");//转换流

                    bw = new BufferedWriter(osw); //缓冲输出流--加速字符串传输
                    pw = new PrintWriter(bw);
                    //3.往假设 a.txt 写入文件---一直写入，直到文件”退出/exit“
                    //3.1定义字符串变量--赋值为null，接收用户每次输入”文本内容“
                    String line = null;
                    //3.2 【补充：考虑用户体验】提示内容
                    System.out.println(" 请开始输入内容【‘退出’程序结束】");
                    //3.2 一直写入
                    while (true) {
                        input.nextLine();//从控制台获取一行文本
                        //3.3 判断条件
                        pw.println(line);
                        if (line.equals("退出") || line.equals("exit")) {
                            break;//跳出方法体

                        }
                        //3.4 PW字符输出流--写出
                        pw.println(line);

                    }
                    //3.5用户体验
                    System.out.println("拜拜~~，请查看API文件夹生成文件！！");
                    //3.6关闭高级流

                    pw.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } finally {
                }

            }

}
